package pe.com.hatunsol.hatun_android;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import android.util.Log;

import pe.com.hatunsol.hatun_android.adapter.MainAdapterListaVenta;
import pe.com.hatunsol.hatun_android.adapter.MainSpinnerAdapterVenta;
import pe.com.hatunsol.hatun_android.dao.DataBaseHelper;
import pe.com.hatunsol.hatun_android.dao.LocalDAO;
import pe.com.hatunsol.hatun_android.dao.ProductoDAO;
import pe.com.hatunsol.hatun_android.dao.VentaDAO;
import pe.com.hatunsol.hatun_android.entity.DetalleVenta;
import pe.com.hatunsol.hatun_android.entity.Local;
import pe.com.hatunsol.hatun_android.entity.Producto;
import pe.com.hatunsol.hatun_android.entity.Venta;

/**
 * Created by Vladimir on 24/02/2015.
 */
public class RegVentaActivity extends ActionBarActivity {
    private Button btGrabarVenta;
    private EditText EdCantidad;
    //Este es para el spinner de Ferreteria
    private Spinner spMain;
    private List<Local> lstListado = null;
    private MainSpinnerAdapterVenta mainSpinnerAdapterVenta;

   //Este es para el spinner de Cliente
    /*private Spinner spCliente;
    private List<Cliente> lsListadocliente = null;
    private ClienteSpinnerAdapter clienteSpinnerAdapter;*/

   //Este es para el ListView de Productos
    private ListView lvVentaActivity;
    private List<Producto> lsListadoProducto     = null;
    private List<DetalleVenta> lsProductodetalle = null;
    private MainAdapterListaVenta mMainAdapterListaVenta;

    //Edit text
    private TextView tvFecha;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registro_venta);

        spMain        = (Spinner)findViewById(R.id.spMain);
        //spCliente   = (Spinner)findViewById(R.id.spCliente);
        tvFecha       = (TextView)findViewById(R.id.tvFecha);
        btGrabarVenta = (Button)findViewById(R.id.btGrabarVenta);
        EdCantidad    = (EditText)findViewById(R.id.EdCantidad);

        lvVentaActivity = (ListView)findViewById(R.id.lvVentaActivity);

        /*VentaDAO ventaDAO = new VentaDAO();

        List<Venta> lstventa = ventaDAO.listadoVentas();
        Log.d("cant es:",String.valueOf(lstventa.size()));*/
        //

        try{
            DataBaseHelper dataBaseHelper = new DataBaseHelper(RegVentaActivity.this);
            dataBaseHelper.createDataBase();
            dataBaseHelper.openDataBase();
        }catch (Exception ex){
            Toast.makeText(RegVentaActivity.this,"No se pudo abrir la BD",Toast.LENGTH_SHORT).show();
        }

        LocalDAO locales = new LocalDAO();
        lstListado = locales.listadoLocales();

        mainSpinnerAdapterVenta = new MainSpinnerAdapterVenta(RegVentaActivity.this,0,lstListado);
        spMain.setAdapter(mainSpinnerAdapterVenta);
        //***********************************

        //Este es para el Spinner de cliente
        /*ClienteDAO cliente = new ClienteDAO();
        lsListadocliente = cliente.listadoClientes();

        clienteSpinnerAdapter = new ClienteSpinnerAdapter(RegVentaActivity.this,0,lsListadocliente);
        spCliente.setAdapter(clienteSpinnerAdapter);*/
        //**************************************

        Calendar cal = new GregorianCalendar();
        Date date = cal.getTime();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String formatteDate = df.format(date);
        tvFecha.setText(formatteDate);

        spMain.setOnItemSelectedListener(seleccionar);

        btGrabarVenta.setOnClickListener(grabarventa);

    }

    AdapterView.OnItemSelectedListener seleccionar = new AdapterView.OnItemSelectedListener(){

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            Local item = (Local)parent.getItemAtPosition(position);
            int code   = item.getId();
            //Toast.makeText(RegVentaActivity.this, "Codigo " + code , Toast.LENGTH_SHORT).show();

            lsProductodetalle = new ArrayList<DetalleVenta>();
            ProductoDAO producto = new ProductoDAO();
            lsListadoProducto = producto.filtradoprod(code);

            for(int i=0;i<lsListadoProducto.size();i++){
                DetalleVenta detalleVenta = new DetalleVenta();
                detalleVenta.setProducto(lsListadoProducto.get(i));
                lsProductodetalle.add(detalleVenta);
            }

            mMainAdapterListaVenta = new MainAdapterListaVenta(RegVentaActivity.this,0,lsProductodetalle);
            lvVentaActivity.setAdapter(mMainAdapterListaVenta);

            mMainAdapterListaVenta.notifyDataSetChanged();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            Toast.makeText(RegVentaActivity.this, "Cuando no seleccioné", Toast.LENGTH_SHORT).show();
        }
    };

    View.OnClickListener grabarventa = new View.OnClickListener(){

        @Override
        public void onClick(View v) {

            //***************
            String fecha  = tvFecha.getText().toString();
            int num       = lsProductodetalle.toArray().length;
            //
            Local item    = (Local)spMain.getSelectedItem();
            int codlocal  = item.getId();
            //
            double price,subtot,total  = 0;
            int cant=0,codprod;


            for(int j=0;j<num;j++) {
                DetalleVenta detail = (DetalleVenta)mMainAdapterListaVenta.getItem(j);
                price       = detail.getProducto().getPrecio();
                cant        =  detail.getCantidad();
                subtot      = (price * cant);
                total       = subtot + total;

                Log.d("cant es:", String.valueOf(cant));

            }

           if(cant==0){

               Toast.makeText(RegVentaActivity.this, "Debe Ingresar cantidad", Toast.LENGTH_SHORT).show();

            }else{

            //Aqui grabamos en la cabecera
            VentaDAO cabventa = new VentaDAO();
            Venta venta = new Venta();
            venta.setFecha(fecha);
            venta.setIdFerreteria(codlocal);
            venta.setTotal(total);

            int codvent = cabventa.insertaVenta(venta);

            for(int i=0;i<num;i++){
                DetalleVenta detail = (DetalleVenta)mMainAdapterListaVenta.getItem(i); //De esta manera lo convierto en una variable tipo objeto

                price       = detail.getProducto().getPrecio();
                cant        =  detail.getCantidad();
                codprod     = detail.getProducto().getIdproducto();
                //
                /*subtot   = (price * cant);
                total    = subtot + total;*/
                //
                Producto producto = new Producto();

                //Grabamos el detalle de la venta
                DetalleVenta detalle = new DetalleVenta();
                detalle.setIdVenta(codvent);
                detalle.setProducto(detail.getProducto());
                detalle.setCantidad(cant);
                detalle.setPrecioUnitario(price);
                //
                VentaDAO detventa = new VentaDAO();
                detventa.insertadetalle(detalle);


            }

               Toast.makeText(RegVentaActivity.this, "Total es: " + total , Toast.LENGTH_SHORT).show();
               Toast.makeText(RegVentaActivity.this, "Registro Grabado con éxito", Toast.LENGTH_SHORT).show();

           }

        }
    };

}
